package main

import "github.com/beego/beego/v2/client/orm"

func init() {
	orm.RegisterModel(new(User), new(Profile), new(Post), new(Tag)) // 注册模型
	// 可以关联表的时候，增加前缀或者后缀
	// orm.RegisterModelWithPrefix("prefix_", new(User))
	// orm.RegisterModelWithSuffix("suffix_", new(User))
}

type User struct {
	Id      int
	Name    string
	Profile *Profile `orm:"rel(one)"`      // 设置关联关系，一对一
	Post    []*Post  `orm:"reverse(many)"` // 设置反向一对多关系
}

type Profile struct {
	Id   int
	Age  int16
	User *User `orm:"reverse(one)"` //  设置反向一对一关系
}

type Post struct {
	Id    int
	Title string
	User  *User  `orm:"rel(fk)"`  // 设置一对多关系
	Tags  []*Tag `orm:"rel(m2m)"` // 设置多对多关系
}

type Tag struct {
	Id    int
	Name  string
	Posts []*Post `orm:"reverse(many)"` // 设置多对多反向关系
}
